#ifndef VItemPropertyBrowser_H
#define VItemPropertyBrowser_H

#include <QtTreePropertyBrowser.h>
#include <QtPropertyBrowser.h>
#include <QtVariantProperty.h>
#include "VTreeModel.h"

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

class VItemPropertyBrowser : public QObject
{
	Q_OBJECT
	
public:
	VItemPropertyBrowser(QObject *parent = 0);
	~VItemPropertyBrowser();

	QtTreePropertyBrowser *browser() const { return m_browser;}

	void clearAll();
	void setTreeModel(VTreeModel *treeModel);
	void setTreeIndex(const QModelIndex &treeIndex);

	void addProperty(QtVariantProperty *prop, const QString &id);
	
private slots:
	void browserValueChanged(QtProperty *prop, const QVariant &value);
	void modelDataChanged(const QModelIndex &topLeft,const QModelIndex &bottomRight);
	
private:
	VTreeModel *m_treeModel;
	QModelIndex m_treeIndex;
	QtTreePropertyBrowser *m_browser;
	QtVariantPropertyManager *m_manager;
	QMap<QtProperty*, QString> m_propertyToId;
	QMap<QString, QtVariantProperty*> m_idToProperty;
	QMap<QString, bool> m_idToExpanded;
};

///////////////////////////////////////////////////////////////////////////////

#endif
